#ifndef _ENCODING_MANAGER_H
#define _ENCODING_MANAGER_H

#include <fonts_manager.h>

#ifndef NULL
#define NULL (void *)0
#endif


// 要显示字符，首先需要去解析出这个字符的unicode，然后根据unicode去字库中找具体该怎么绘制

typedef struct EncodingOpr
{
    char *name;
    int iHeadLen; // 编码格式bom的长度；不同编码格式的bom长度不同
    int (*Support)(unsigned char *bufhead); // 通过缓冲区头地址，判断是否支持某个编码格式
    // 从bufstart到bufend这段缓冲区中获取第一个字符的unicode
    int (*GetUnicodeFromBuffer)(unsigned char *bufstart, unsigned char *bufend, unsigned int *unicode); 
    FontOpr *ptThisEncodingFormatCanShow; // 一个编码可以支持多个字体显示
    struct EncodingOpr *ptNext;
    
}EncodingOpr, *PEncodingOpr;





int RegisterEncodingOpr(EncodingOpr *ptEncodingOpr);
int AddFontOprToEncodingOpr(PFontOpr ptFontOpr, PEncodingOpr ptEncodingOpr);
void RegisterAllEncodingOpr(void);
int SetSupportFontForAllEncodingOpr(void);
PEncodingOpr GetEncodingOprByName(char *name);
void ShowAllEncodingOpr(void);
PEncodingOpr GetEncodingFormatForTextFile(unsigned char *bufhead);
int DelFontOprFrmEncoding(PEncodingOpr ptEncodingOpr, PFontOpr ptFontOpr);


#endif